package com.vcoud.mundialbrasil2014;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DB {

	/** Tabla Actualizar **/
	static final String KEY_ACTUALIZAR_ID = "IDActualizar";
	static final String KEY_ACTUALIZAR_TABLA = "Tabla";
	static final String KEY_ACTUALIZAR_VERSION = "Version";

	/** Tabla Equipos **/
	static final String KEY_ID = "IDEquipo";
	static final String KEY_NOMBRE = "Nombre";
	static final String KEY_BANDERA = "Bandera";
	static final String KEY_ESCUDO = "Escudo";
	static final String KEY_GRUPO = "Grupo";
	static final String KEY_DESCRIPCION = "Descripcion";
	static final String KEY_ACTIVO = "Activo";
	static final String KEY_COLOR = "Color";
	static final String KEY_GANADOS = "Ganados";
	static final String KEY_EMPATADOS = "Empatados";
	static final String KEY_PERDIDOS = "Perdidos";
	static final String KEY_CAMISA = "Camisa";
	static final String KEY_PUNTOS = "Puntos";
	static final String KEY_GOLESFAVOR = "GolesFavor";
	static final String KEY_GOLESCONTRA = "GolesContra";
	static final String KEY_DIFERENCIAGOLES = "DiferenciaGoles";

	/** Tabla Sede **/
	static final String KEY_SEDE_ID = "IDSede";
	static final String KEY_SEDE_NOMBRE = "Nombre";
	static final String KEY_SEDE_NOMBREESTADO = "NombreEstado";
	static final String KEY_SEDE_IMAGEN = "Imagen";
	static final String KEY_SEDE_DESCRIPCION = "Descripcion";

	/** Tabla EtapaMundial **/
	static final String KEY_ETAPAMUNDIAL_ID = "IDEtapaMundial";
	static final String KEY_ETAPAMUNDIAL_NOMBRE = "Nombre";

	/** Tabla Partido **/
	static final String KEY_PARTIDO_IDPARTIDO = "IDPartido";
	static final String KEY_PARTIDO_FK_EQUIPOLOCAL = "FK_EquipoLocal";
	static final String KEY_PARTIDO_FK_EQUIPOVISITANTE = "FK_EquipoVisitante";
	static final String KEY_PARTIDO_FK_SEDE = "FK_Sede";
	static final String KEY_PARTIDO_FECHA = "Fecha";
	static final String KEY_PARTIDO_NOMBREARBITRO = "NombreArbitro";
	static final String KEY_PARTIDO_GOLLOCAL = "GolLocal";
	static final String KEY_PARTIDO_GOLVISITANTE = "GolVisitante";
	static final String KEY_PARTIDO_GOLLOCALTIEMPOEXTRA = "GolLocalTiempoExtra";
	static final String KEY_PARTIDO_GOLVISITANTETIEMPOEXTRA = "GolVisitanteTiempoExtra";
	static final String KEY_PARTIDO_GOLLOCALPENAL = "GolLocalPenal";
	static final String KEY_PARTIDO_GOLVISITANTEPENAL = "GolVisitantePenal";
	static final String KEY_PARTIDO_FK_ETAPAMUNDIAL = "FK_EtapaMundial";

	/** Tabla Jugador **/
	static final String KEY_JUGADOR_IDJUGADOR = "IDJugador";
	static final String KEY_JUGADOR_NOMBRE = "Nombre";
	static final String KEY_JUGADOR_APELLIDO = "Apellido";
	static final String KEY_JUGADOR_DESCRIPCION = "Descripcion";
	static final String KEY_JUGADOR_CLUB = "Club";
	static final String KEY_JUGADOR_NUMERO = "Numero";
	static final String KEY_JUGADOR_POSICION = "Posicion";
	static final String KEY_JUGADOR_FOTO = "Foto";
	static final String KEY_JUGADOR_FK_EQUIPO = "FK_Equipo";
	static final String KEY_JUGADOR_GOL = "Gol";
	static final String KEY_JUGADOR_ASISTENCIA = "Asistencia";
	static final String KEY_JUGADOR_TARJETAAMARILLA = "TarjetaAmarilla";
	static final String KEY_JUGADOR_TARJETAROJA = "TarjetaRoja";
	static final String KEY_JUGADOR_CAPITAN = "Capitan";
	static final String KEY_JUGADOR_LESIONADO = "Lesionado";

	/** Tabla FaltaTarjeta **/
	static final String KEY_FALTATARJETA_IDFALTATARJETA = "IDFaltaTarjeta";
	static final String KEY_FALTATARJETA_FK_JUGADOR = "FK_Jugador";
	static final String KEY_FALTATARJETA_FK_PARTIDO = "FK_Partido";
	static final String KEY_FALTATARJETA_MINUTO = "Minuto";
	static final String KEY_FALTATARJETA_TIPO = "Tipo";

	/** Tabla Gol **/
	static final String KEY_GOL_IDGOL = "IDGol";
	static final String KEY_GOL_FK_JUGADOR = "FK_Jugador";
	static final String KEY_GOL_FK_PARTIDO = "FK_Partido";
	static final String KEY_GOL_MINUTO = "Minuto";
	static final String KEY_GOL_AUTOGOL = "AutoGol";
	static final String KEY_GOL_RUTAVIDEO = "RutaVideo";
	static final String KEY_GOL_FK_EQUIPO = "FK_Equipo";

	/** Tabla Entrenador **/
	static final String KEY_ENTRENADOR_IDENTRENADOR = "IDEntrenador";
	static final String KEY_ENTRENADOR_NOMBRE = "Nombre";
	static final String KEY_ENTRENADOR_APELLIDO = "Apellido";
	static final String KEY_ENTRENADOR_TRAYECTORIA = "Trayectoria";
	static final String KEY_ENTRENADOR_TITULOS = "Titulos";
	static final String KEY_ENTRENADOR_FK_EQUIPO = "FK_Equipo";

	/** Datos Base de Datos **/
	static final String TAG = "Mundial Brasil 2014 Database";
	static final String DB_NOMBRE = "mundial.db";
	public static final int DB_VERSION = 1;

	static final String[] DB_TABLAS = { "Equipo", "Sede", "EtapaMundial",
			"Partido", "Jugador", "FaltaTarjeta", "Gol", "Entrenador",
			"Actualizar" };

	static final String DB_CREAR_ACTUALIZAR = "CREATE TABLE Actualizar"
			+ "(IDActualizar INTEGER PRIMARY KEY, "
			+ "Tabla TEXT NOT NULL, Version INT NOT NULL)";

	static final String DB_CREAR_EQUIPO = "CREATE TABLE Equipo"
			+ "(IDEquipo INTEGER PRIMARY KEY, "
			+ "Nombre TEXT NOT NULL, Bandera TEXT NOT NULL, "
			+ "Escudo TEXT NOT NULL, Grupo TEXT NOT NULL, "
			+ "Descripcion TEXT, Activo INTEGER, "
			+ "Color TEXT, Ganados INTEGER NOT NULL, "
			+ "Empatados INTEGER NOT NULL, "
			+ "Perdidos INTEGER NOT NULL, Camisa TEXT, "
			+ "GolesFavor INTEGER NOT NULL, GolesContra INTEGER NOT NULL, "
			+ "Puntos INTEGER NOT NULL, DiferenciaGoles INTEGER NOT NULL" + ")";

	static final String DB_CREAR_SEDE = "CREATE TABLE Sede"
			+ "(IDSede INTEGER PRIMARY KEY, "
			+ "Nombre TEXT NOT NULL, NombreEstado TEXT NOT NULL, "
			+ "Imagen TEXT, Descripcion TEXT)";

	static final String DB_CREAR_ETAPAMUNDIAL = "CREATE TABLE EtapaMundial"
			+ "(IDEtapaMundial INTEGER PRIMARY KEY, Nombre TEXT NOT NULL)";

	static final String DB_CREAR_PARTIDO = "CREATE TABLE Partido"
			+ "(IDPartido INTEGER PRIMARY KEY, FK_EquipoLocal INTEGER NOT NULL, "
			+ "FK_EquipoVisitante INTEGER NOT NULL, FK_Sede INTEGER NOT NULL, "
			+ "Fecha TEXT NOT NULL, NombreArbitro TEXT, GolLocal INTEGER NOT NULL, "
			+ "GolVisitante INTEGER NOT NULL, GolLocalTiempoExtra INTEGER NOT NULL, "
			+ "GolVisitanteTiempoExtra INTEGER NOT NULL, GolLocalPenal INTEGER NOT NULL, "
			+ "GolVisitantePenal INTEGER NOT NULL, FK_EtapaMundial INTEGER NOT NULL, "
			+ "FOREIGN KEY(FK_EquipoLocal) REFERENCES Equipo(IDEquipo), "
			+ "FOREIGN KEY(FK_EquipoVisitante) REFERENCES Equipo(IDEquipo), "
			+ "FOREIGN KEY(FK_Sede) REFERENCES Sede(IDSede), "
			+ "FOREIGN KEY(FK_EtapaMundial) REFERENCES EtapaMundial(IDEtapaMundial))";

	static final String DB_CREAR_JUGADOR = "CREATE TABLE Jugador"
			+ "(IDJugador INTEGER PRIMARY KEY, Nombre TEXT NOT NULL, "
			+ "Apellido TEXT, Descripcion TEXT, Club TEXT NOT NULL, "
			+ "Numero INTEGER, Posicion TEXT NOT NULL, Foto TEXT, "
			+ "FK_Equipo INTEGER NOT NULL, Gol INTEGER NOT NULL, "
			+ "Asistencia INTEGER NOT NULL, TarjetaAmarilla INTEGER NOT NULL, "
			+ "TarjetaRoja INTEGER NOT NULL, Capitan INTEGER NOT NULL, "
			+ "Lesionado INTEGER NOT NULL, "
			+ "FOREIGN KEY(FK_Equipo) REFERENCES Equipo(IDEquipo))";

	static final String DB_CREAR_FALTATARJETA = "CREATE TABLE FaltaTarjeta"
			+ "(IDFaltaTarjeta INTEGER PRIMARY KEY, FK_Jugador INTEGER NOT NULL, "
			+ "FK_Partido INTEGER NOT NULL, Minuto INTEGER NOT NULL, "
			+ "Tipo TEXT NOT NULL, "
			+ "FOREIGN KEY(FK_Jugador) REFERENCES Jugador(IDJugador), "
			+ "FOREIGN KEY(FK_Partido) REFERENCES Partido(IDPartido))";

	static final String DB_CREAR_GOL = "CREATE TABLE Gol"
			+ "(IDGol INTEGER PRIMARY KEY, FK_Jugador INTEGER NOT NULL, "
			+ "FK_Partido INTEGER NOT NULL, Minuto INTEGER NOT NULL, "
			+ "AutoGol INTEGER NOT NULL, RutaVideo TEXT, "
			+ "FK_Equipo INTEGER NOT NULL, "
			+ "FOREIGN KEY(FK_Jugador) REFERENCES Jugador(IDJugador), "
			+ "FOREIGN KEY(FK_Partido) REFERENCES Partido(IDPartido), "
			+ "FOREIGN KEY(FK_Equipo) REFERENCES Equipo(IDEquipo))";

	static final String DB_CREAR_ENTRENADOR = "CREATE TABLE Entrenador"
			+ "(IDEntrenador INTEGER PRIMARY KEY, Nombre TEXT NOT NULL, "
			+ "Apellido TEXT NOT NULL, Trayectoria TEXT NOT NULL, "
			+ "Titulos TEXT NOT NULL, FK_Equipo INTEGER NOT NULL, "
			+ "FOREIGN KEY(FK_EQUIPO) REFERENCES Equipo(IDEquipo))";

	final Context context;

	DatabaseHelper DBHelper;
	SQLiteDatabase db;

	public static Boolean DB_ACTUALIZADA = false;

	public DB(Context ctx) {
		this.context = ctx;
		DBHelper = new DatabaseHelper(context);
	}

	// Clase que ayuda a controlar la base de datos
	private static class DatabaseHelper extends SQLiteOpenHelper {
		DatabaseHelper(Context context) {
			super(context, DB_NOMBRE, null, DB_VERSION);
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			try {
				db.execSQL(DB_CREAR_ACTUALIZAR);
				db.execSQL(DB_CREAR_EQUIPO);
				db.execSQL(DB_CREAR_SEDE);
				db.execSQL(DB_CREAR_ETAPAMUNDIAL);
				db.execSQL(DB_CREAR_PARTIDO);
				db.execSQL(DB_CREAR_JUGADOR);
				db.execSQL(DB_CREAR_FALTATARJETA);
				db.execSQL(DB_CREAR_GOL);
				db.execSQL(DB_CREAR_ENTRENADOR);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int versionVieja,
				int versionNueva) {
			Log.w(TAG, "Actualizacion de la base de datos " + DB_NOMBRE
					+ " de la version " + versionVieja + " a la "
					+ versionNueva + ", lo cual destruira toda la data");
			for (String mTabla : DB_TABLAS) {
				db.execSQL("DROP TABLE IF EXISTS " + mTabla);
			}
			onCreate(db);
			DB_ACTUALIZADA = true;
		}
	}

	public Boolean estaActualizada() {
		return db.getVersion() == DB_VERSION;
	}

	/** <b>Abre la conexion</b> con la base de datos **/
	public DB abrir() throws SQLException {
		db = DBHelper.getReadableDatabase();
		return this;
	}

	public DB abrirConEscritura() throws SQLException {
		db = DBHelper.getWritableDatabase();
		return this;
	}

	/** <b>Cierra la conexion</b> con la base de datos **/
	public void cerrar() {
		DBHelper.close();
	}

	public int obtenerVersion() {
		return db.getVersion();
	}

	public Cursor obtenerGrupo(String Grupo) {
		return db.query(DB_TABLAS[0], new String[] { KEY_ID, KEY_NOMBRE,
				KEY_BANDERA, KEY_ESCUDO, KEY_GRUPO, KEY_DESCRIPCION,
				KEY_ACTIVO, KEY_COLOR, KEY_GANADOS, KEY_EMPATADOS,
				KEY_PERDIDOS, KEY_CAMISA, KEY_PUNTOS, KEY_GOLESFAVOR,
				KEY_GOLESCONTRA, KEY_DIFERENCIAGOLES }, KEY_GRUPO + "='"
				+ Grupo + "'", null, null, null, KEY_PUNTOS + " DESC, "
				+ KEY_DIFERENCIAGOLES + " DESC, " + KEY_GOLESFAVOR + " DESC");
	}

	public long insertarActualizacion(int IDActualizar, String Tabla,
			int Version) {
		ContentValues args = new ContentValues();
		args.put(KEY_ACTUALIZAR_ID, IDActualizar);
		args.put(KEY_ACTUALIZAR_TABLA, Tabla);
		args.put(KEY_ACTUALIZAR_VERSION, Version);
		return db.insertWithOnConflict(DB_TABLAS[8], null, args,
				SQLiteDatabase.CONFLICT_REPLACE);
	}

	public Cursor obtenerActualizacion(long IDActualizar) {
		String[] columnas = new String[] { KEY_ACTUALIZAR_ID,
				KEY_ACTUALIZAR_TABLA, KEY_ACTUALIZAR_VERSION };
		Cursor c = null;
		try {
			c = db.query(true, DB_TABLAS[8], columnas, KEY_ACTUALIZAR_ID
					+ " = " + IDActualizar, null, null, null, null, null);
		} catch (SQLException e) {
			e.printStackTrace();
		}

		if (c != null) {
			c.moveToFirst();
		}
		return c;
	}

	/** Inserta un equipo a la base de datos **/
	public long insertarEquipo(int IDEquipo, String Nombre, String Bandera,
			String Escudo, String Grupo, String Descripcion, int Activo,
			String Color, int Ganados, int Empatados, int Perdidos,
			String Camisa, int Puntos, int GolesFavor, int GolesContra,
			int DiferenciaGoles) {
		ContentValues valoresIniciales = new ContentValues();
		valoresIniciales.put(KEY_ID, IDEquipo);
		valoresIniciales.put(KEY_NOMBRE, Nombre);
		valoresIniciales.put(KEY_BANDERA, Bandera);
		valoresIniciales.put(KEY_ESCUDO, Escudo);
		valoresIniciales.put(KEY_GRUPO, Grupo);
		valoresIniciales.put(KEY_DESCRIPCION, Descripcion);
		valoresIniciales.put(KEY_ACTIVO, Activo);
		valoresIniciales.put(KEY_COLOR, Color);
		valoresIniciales.put(KEY_GANADOS, Ganados);
		valoresIniciales.put(KEY_EMPATADOS, Empatados);
		valoresIniciales.put(KEY_PERDIDOS, Perdidos);
		valoresIniciales.put(KEY_CAMISA, Camisa);
		valoresIniciales.put(KEY_PUNTOS, Puntos);
		valoresIniciales.put(KEY_GOLESFAVOR, GolesFavor);
		valoresIniciales.put(KEY_GOLESCONTRA, GolesContra);
		valoresIniciales.put(KEY_DIFERENCIAGOLES, DiferenciaGoles);
		// return db.insert(DB_TABLA, null, valoresIniciales);
		return db.insertWithOnConflict(DB_TABLAS[0], null, valoresIniciales,
				SQLiteDatabase.CONFLICT_REPLACE);
	}

	/** Elimina cierto equipo **/
	public boolean eliminarEquipo(long IDEquipo) {
		return db.delete(DB_TABLAS[0], KEY_ID + "=" + IDEquipo, null) > 0;
	}

	/** Se obtiene los datos de todos los equipos **/
	public Cursor obtenerTodosEquipos() {
		return db.query(DB_TABLAS[0], new String[] { KEY_ID, KEY_NOMBRE,
				KEY_BANDERA, KEY_ESCUDO, KEY_GRUPO, KEY_DESCRIPCION,
				KEY_ACTIVO, KEY_COLOR, KEY_GANADOS, KEY_EMPATADOS,
				KEY_PERDIDOS, KEY_CAMISA, KEY_PUNTOS, KEY_GOLESFAVOR,
				KEY_GOLESCONTRA, KEY_DIFERENCIAGOLES }, "Activo = 1", null,
				null, null, KEY_NOMBRE);
	}

	/** Obtener los datos de un solo equipo **/
	public Cursor obtenerEquipo(long IDEquipo) {
		Cursor mCursor = null;
		try {
			mCursor = db.query(true, DB_TABLAS[0], new String[] { KEY_ID,
					KEY_NOMBRE, KEY_BANDERA, KEY_ESCUDO, KEY_GRUPO,
					KEY_DESCRIPCION, KEY_ACTIVO, KEY_COLOR, KEY_GANADOS,
					KEY_EMPATADOS, KEY_PERDIDOS, KEY_CAMISA, KEY_PUNTOS,
					KEY_GOLESFAVOR, KEY_GOLESCONTRA, KEY_DIFERENCIAGOLES },
					KEY_ID + " = " + IDEquipo, null, null, null, null, null);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		if (mCursor != null) {
			mCursor.moveToFirst();
		}
		return mCursor;
	}

	/** Actualiza cierto equipo **/
	public boolean actualizarEquipo(long IDEquipo, String Nombre,
			String Bandera, String Escudo, String Grupo, String Descripcion,
			int Activo, String Color, int Ganados, int Empatados, int Perdidos,
			String Camisa, int Puntos, int GolesFavor, int GolesContra,
			int DiferenciaGoles) {
		ContentValues args = new ContentValues();
		args.put(KEY_NOMBRE, Nombre);
		args.put(KEY_BANDERA, Bandera);
		args.put(KEY_ESCUDO, Escudo);
		args.put(KEY_GRUPO, Grupo);
		args.put(KEY_DESCRIPCION, Descripcion);
		args.put(KEY_ACTIVO, Activo);
		args.put(KEY_COLOR, Color);
		args.put(KEY_GANADOS, Ganados);
		args.put(KEY_EMPATADOS, Empatados);
		args.put(KEY_PERDIDOS, Perdidos);
		args.put(KEY_CAMISA, Camisa);
		args.put(KEY_PUNTOS, Puntos);
		args.put(KEY_GOLESFAVOR, GolesFavor);
		args.put(KEY_GOLESCONTRA, GolesContra);
		args.put(KEY_DIFERENCIAGOLES, DiferenciaGoles);
		return db.update(DB_TABLAS[0], args, KEY_ID + "=" + IDEquipo, null) > 0;
	}

	public long insertarSede(int IDSede, String Nombre, String NombreEstado,
			String Imagen, String Descripcion) {
		ContentValues valoresIniciales = new ContentValues();
		valoresIniciales.put(KEY_SEDE_ID, IDSede);
		valoresIniciales.put(KEY_SEDE_NOMBRE, Nombre);
		valoresIniciales.put(KEY_SEDE_NOMBREESTADO, NombreEstado);
		valoresIniciales.put(KEY_SEDE_IMAGEN, Imagen);
		valoresIniciales.put(KEY_SEDE_DESCRIPCION, Descripcion);
		return db.insertWithOnConflict(DB_TABLAS[1], null, valoresIniciales,
				SQLiteDatabase.CONFLICT_REPLACE);
	}

	/** Obtener todas las sedes **/
	public Cursor obtenerSedes() {
		return db
				.query(DB_TABLAS[1], new String[] { KEY_SEDE_ID,
						KEY_SEDE_NOMBRE, KEY_SEDE_NOMBREESTADO,
						KEY_SEDE_IMAGEN, KEY_SEDE_DESCRIPCION }, null, null,
						null, null, KEY_SEDE_NOMBRE);
	}

	public long insertarEtapaMundial(int IDEtapaMundial, String Nombre) {
		ContentValues valoresIniciales = new ContentValues();
		valoresIniciales.put(KEY_ETAPAMUNDIAL_ID, IDEtapaMundial);
		valoresIniciales.put(KEY_ETAPAMUNDIAL_NOMBRE, Nombre);
		return db.insertWithOnConflict(DB_TABLAS[2], null, valoresIniciales,
				SQLiteDatabase.CONFLICT_REPLACE);
	}

	public long insertarPartido(int IDPartido, int FK_EquipoLocal,
			int FK_EquipoVisitante, int FK_Sede, String Fecha,
			String NombreArbitro, int GolLocal, int GolVisitante,
			int GolLocalTiempoExtra, int GolVisitanteTiempoExtra,
			int GolLocalPenal, int GolVisitantePenal, int FK_EtapaMundial) {
		ContentValues args = new ContentValues();
		args.put(KEY_PARTIDO_IDPARTIDO, IDPartido);
		args.put(KEY_PARTIDO_FK_EQUIPOLOCAL, FK_EquipoLocal);
		args.put(KEY_PARTIDO_FK_EQUIPOVISITANTE, FK_EquipoVisitante);
		args.put(KEY_PARTIDO_FK_SEDE, FK_Sede);
		args.put(KEY_PARTIDO_FECHA, Fecha);
		args.put(KEY_PARTIDO_NOMBREARBITRO, NombreArbitro);
		args.put(KEY_PARTIDO_GOLLOCAL, GolLocal);
		args.put(KEY_PARTIDO_GOLVISITANTE, GolVisitante);
		args.put(KEY_PARTIDO_GOLLOCALTIEMPOEXTRA, GolLocalTiempoExtra);
		args.put(KEY_PARTIDO_GOLVISITANTETIEMPOEXTRA, GolVisitanteTiempoExtra);
		args.put(KEY_PARTIDO_GOLLOCALPENAL, GolLocalPenal);
		args.put(KEY_PARTIDO_GOLVISITANTEPENAL, GolVisitantePenal);
		args.put(KEY_PARTIDO_FK_ETAPAMUNDIAL, FK_EtapaMundial);
		return db.insertWithOnConflict(DB_TABLAS[3], null, args,
				SQLiteDatabase.CONFLICT_REPLACE);
	}

	public long insertarJugador(int IDJugador, String Nombre, String Apellido,
			String Descripcion, String Club, int Numero, String Posicion,
			String Foto, int FK_Equipo, int Gol, int Asistencia,
			int TarjetaAmarilla, int TarjetaRoja, int Capitan, int Lesionado) {
		ContentValues args = new ContentValues();
		args.put(KEY_JUGADOR_IDJUGADOR, IDJugador);
		args.put(KEY_JUGADOR_NOMBRE, Nombre);
		args.put(KEY_JUGADOR_APELLIDO, Apellido);
		args.put(KEY_JUGADOR_DESCRIPCION, Descripcion);
		args.put(KEY_JUGADOR_CLUB, Club);
		args.put(KEY_JUGADOR_NUMERO, Numero);
		args.put(KEY_JUGADOR_POSICION, Posicion);
		args.put(KEY_JUGADOR_FOTO, Foto);
		args.put(KEY_JUGADOR_FK_EQUIPO, FK_Equipo);
		args.put(KEY_JUGADOR_GOL, Gol);
		args.put(KEY_JUGADOR_ASISTENCIA, Asistencia);
		args.put(KEY_JUGADOR_TARJETAAMARILLA, TarjetaAmarilla);
		args.put(KEY_JUGADOR_TARJETAROJA, TarjetaRoja);
		args.put(KEY_JUGADOR_CAPITAN, Capitan);
		args.put(KEY_JUGADOR_LESIONADO, Lesionado);
		return db.insertWithOnConflict(DB_TABLAS[4], null, args,
				SQLiteDatabase.CONFLICT_REPLACE);
	}

	/** Insercion de goles **/
	public long insertarGol(int IDGol, int FK_Jugador, int FK_Partido,
			int Minuto, int AutoGol, String RutaVideo, int FK_Equipo) {

		ContentValues args = new ContentValues();

		args.put(KEY_GOL_IDGOL, IDGol);
		args.put(KEY_GOL_FK_JUGADOR, FK_Jugador);
		args.put(KEY_GOL_FK_PARTIDO, FK_Partido);
		args.put(KEY_GOL_MINUTO, Minuto);
		args.put(KEY_GOL_AUTOGOL, AutoGol);
		args.put(KEY_GOL_RUTAVIDEO, RutaVideo);
		args.put(KEY_GOL_FK_EQUIPO, FK_Equipo);

		return db.insertWithOnConflict(DB_TABLAS[6], null, args,
				SQLiteDatabase.CONFLICT_REPLACE);

	}

	public Cursor obtenerPartidosFaseGrupos() {
		String[] columnas = new String[] { KEY_PARTIDO_IDPARTIDO,
				KEY_PARTIDO_FK_EQUIPOLOCAL, KEY_PARTIDO_FK_EQUIPOVISITANTE,
				KEY_PARTIDO_FK_SEDE, KEY_PARTIDO_FECHA,
				KEY_PARTIDO_NOMBREARBITRO, KEY_PARTIDO_GOLLOCAL,
				KEY_PARTIDO_GOLVISITANTE, KEY_PARTIDO_GOLLOCALTIEMPOEXTRA,
				KEY_PARTIDO_GOLVISITANTETIEMPOEXTRA, KEY_PARTIDO_GOLLOCALPENAL,
				KEY_PARTIDO_GOLVISITANTEPENAL, KEY_PARTIDO_FK_ETAPAMUNDIAL };

		return db.query(DB_TABLAS[3], columnas, KEY_PARTIDO_FK_ETAPAMUNDIAL
				+ " = 1", null, null, null, "datetime(" + KEY_PARTIDO_FECHA
				+ ")");
	}

	public Cursor obtenerPartido(long IDPartido) {
		String[] columnas = new String[] { KEY_PARTIDO_IDPARTIDO,
				KEY_PARTIDO_FK_EQUIPOLOCAL, KEY_PARTIDO_FK_EQUIPOVISITANTE,
				KEY_PARTIDO_FK_SEDE, KEY_PARTIDO_FECHA,
				KEY_PARTIDO_NOMBREARBITRO, KEY_PARTIDO_GOLLOCAL,
				KEY_PARTIDO_GOLVISITANTE, KEY_PARTIDO_GOLLOCALTIEMPOEXTRA,
				KEY_PARTIDO_GOLVISITANTETIEMPOEXTRA, KEY_PARTIDO_GOLLOCALPENAL,
				KEY_PARTIDO_GOLVISITANTEPENAL, KEY_PARTIDO_FK_ETAPAMUNDIAL };

		Cursor mCursor = null;
		try {
			mCursor = db.query(true, DB_TABLAS[3], columnas,
					KEY_PARTIDO_IDPARTIDO + " = " + IDPartido, null, null,
					null, null, null);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		if (mCursor != null) {
			mCursor.moveToFirst();
		}
		return mCursor;
	}

	public Cursor obtenerPartidosSegundaFase() {
		String[] columnas = new String[] { KEY_PARTIDO_IDPARTIDO,
				KEY_PARTIDO_FK_EQUIPOLOCAL, KEY_PARTIDO_FK_EQUIPOVISITANTE,
				KEY_PARTIDO_FK_SEDE, KEY_PARTIDO_FECHA,
				KEY_PARTIDO_NOMBREARBITRO, KEY_PARTIDO_GOLLOCAL,
				KEY_PARTIDO_GOLVISITANTE, KEY_PARTIDO_GOLLOCALTIEMPOEXTRA,
				KEY_PARTIDO_GOLVISITANTETIEMPOEXTRA, KEY_PARTIDO_GOLLOCALPENAL,
				KEY_PARTIDO_GOLVISITANTEPENAL, KEY_PARTIDO_FK_ETAPAMUNDIAL };

		return db.query(DB_TABLAS[3], columnas, KEY_PARTIDO_FK_ETAPAMUNDIAL
				+ " > 1", null, null, null, "datetime(" + KEY_PARTIDO_FECHA
				+ ")");
	}

	public Cursor obtenerPartidosTodos() {
		String[] columnas = new String[] { KEY_PARTIDO_IDPARTIDO,
				KEY_PARTIDO_FK_EQUIPOLOCAL, KEY_PARTIDO_FK_EQUIPOVISITANTE,
				KEY_PARTIDO_FK_SEDE, KEY_PARTIDO_FECHA,
				KEY_PARTIDO_NOMBREARBITRO, KEY_PARTIDO_GOLLOCAL,
				KEY_PARTIDO_GOLVISITANTE, KEY_PARTIDO_GOLLOCALTIEMPOEXTRA,
				KEY_PARTIDO_GOLVISITANTETIEMPOEXTRA, KEY_PARTIDO_GOLLOCALPENAL,
				KEY_PARTIDO_GOLVISITANTEPENAL, KEY_PARTIDO_FK_ETAPAMUNDIAL };

		return db.query(DB_TABLAS[3], columnas, null, null, null, null,
				"datetime(" + KEY_PARTIDO_FECHA + ")");
	}

	public Cursor obtenerPartidosPorFecha(String fecha) {
		String[] columnas = new String[] { KEY_PARTIDO_IDPARTIDO,
				KEY_PARTIDO_FK_EQUIPOLOCAL, KEY_PARTIDO_FK_EQUIPOVISITANTE,
				KEY_PARTIDO_FK_SEDE, "time(" + KEY_PARTIDO_FECHA + ")",
				KEY_PARTIDO_NOMBREARBITRO, KEY_PARTIDO_GOLLOCAL,
				KEY_PARTIDO_GOLVISITANTE, KEY_PARTIDO_GOLLOCALTIEMPOEXTRA,
				KEY_PARTIDO_GOLVISITANTETIEMPOEXTRA, KEY_PARTIDO_GOLLOCALPENAL,
				KEY_PARTIDO_GOLVISITANTEPENAL, KEY_PARTIDO_FK_ETAPAMUNDIAL,
				KEY_PARTIDO_FECHA };
		return db.query(DB_TABLAS[3], columnas, "date(" + KEY_PARTIDO_FECHA
				+ ") = '" + fecha + "'", null, null, null, "datetime("
				+ KEY_PARTIDO_FECHA + ")");
	}

	public Cursor obtenerFechasPartidos() {
		String[] columnas = new String[] { "date(" + KEY_PARTIDO_FECHA + ")",
				KEY_PARTIDO_FK_ETAPAMUNDIAL };
		return db.query(DB_TABLAS[3], columnas, null, null, "date("
				+ KEY_PARTIDO_FECHA + ")", null, null);
	}

	/** Caso 0 para Fase grupos y caso 1 para Segunda fase **/
	public Cursor obtenerFechasPartidos(int caso) {
		String[] columnas = new String[] { "date(" + KEY_PARTIDO_FECHA + ")",
				KEY_PARTIDO_FK_ETAPAMUNDIAL };
		String where = null;
		switch (caso) {
		case 0:
			where = KEY_PARTIDO_FK_ETAPAMUNDIAL + " = 1";
			break;
		case 1:
			where = KEY_PARTIDO_FK_ETAPAMUNDIAL + " > 1";
			break;
		default:
			where = KEY_PARTIDO_FK_ETAPAMUNDIAL + " > 0";
		}
		try {
			return db.query(DB_TABLAS[3], columnas, where, null, "date("
					+ KEY_PARTIDO_FECHA + ")", null, null);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
	}

	public Cursor obtenerGolesPartido(long IDPartido) {
		String[] columnas = new String[] { KEY_GOL_IDGOL, KEY_GOL_FK_JUGADOR,
				KEY_GOL_FK_PARTIDO, KEY_GOL_MINUTO, KEY_GOL_AUTOGOL,
				KEY_GOL_RUTAVIDEO, KEY_GOL_FK_EQUIPO };
		return db.query(DB_TABLAS[6], columnas, KEY_GOL_FK_PARTIDO + " = "
				+ IDPartido, null, null, null, KEY_GOL_MINUTO + " desc, "
						+ KEY_GOL_IDGOL + " desc");
	}

	public int obtenerGoles(long IDEquipo, long IDPartido) {
		String[] columnas = new String[] { "COUNT(*)" };
		Cursor mCursor = null;
		try {
			mCursor = db.query(DB_TABLAS[6], columnas, KEY_GOL_FK_PARTIDO
					+ " = " + IDPartido + " AND " + KEY_GOL_FK_EQUIPO + " = "
					+ IDEquipo + " AND " + "upper(" + KEY_GOL_RUTAVIDEO + ") != 'PENAL'",
					null, null, null, null);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		if (mCursor != null && mCursor.getCount() > 0) {
			mCursor.moveToFirst();
			return mCursor.getInt(0);
		} else {
			return 0;
		}

	}
	
	public int obtenerGolesPenal(long IDEquipo, long IDPartido) {
		String[] columnas = new String[] { "COUNT(*)" };
		Cursor mCursor = null;
		try {
			mCursor = db.query(DB_TABLAS[6], columnas, KEY_GOL_FK_PARTIDO
					+ " = " + IDPartido + " AND " + KEY_GOL_FK_EQUIPO + " = "
					+ IDEquipo + " AND " + "upper(" + KEY_GOL_RUTAVIDEO + ") = 'PENAL'",
					null, null, null, null);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		if (mCursor != null && mCursor.getCount() > 0) {
			mCursor.moveToFirst();
			return mCursor.getInt(0);
		} else {
			return 0;
		}

	}

	public Cursor obtenerJugador(long IDJugador) {
		String[] columnas = new String[] { KEY_JUGADOR_IDJUGADOR,
				KEY_JUGADOR_NOMBRE, KEY_JUGADOR_APELLIDO,
				KEY_JUGADOR_DESCRIPCION, KEY_JUGADOR_CLUB, KEY_JUGADOR_NUMERO,
				KEY_JUGADOR_POSICION, KEY_JUGADOR_FOTO, KEY_JUGADOR_FK_EQUIPO,
				KEY_JUGADOR_GOL, KEY_JUGADOR_ASISTENCIA,
				KEY_JUGADOR_TARJETAAMARILLA, KEY_JUGADOR_TARJETAROJA,
				KEY_JUGADOR_CAPITAN, KEY_JUGADOR_LESIONADO };
		Cursor mCursor = null;
		try {
			mCursor = db.query(DB_TABLAS[4], columnas, KEY_JUGADOR_IDJUGADOR
					+ " = " + IDJugador, null, null, null, null);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		if (mCursor != null) {
			mCursor.moveToFirst();
		}
		return mCursor;
	}

	public Cursor obtenerJugadoresPorEquipo(long IDEquipo) {
		String[] columnas = new String[] { KEY_JUGADOR_IDJUGADOR,
				KEY_JUGADOR_NOMBRE, KEY_JUGADOR_APELLIDO,
				KEY_JUGADOR_DESCRIPCION, KEY_JUGADOR_CLUB, KEY_JUGADOR_NUMERO,
				KEY_JUGADOR_POSICION, KEY_JUGADOR_FOTO, KEY_JUGADOR_FK_EQUIPO,
				KEY_JUGADOR_GOL, KEY_JUGADOR_ASISTENCIA,
				KEY_JUGADOR_TARJETAAMARILLA, KEY_JUGADOR_TARJETAROJA,
				KEY_JUGADOR_CAPITAN, KEY_JUGADOR_LESIONADO };

		return db.query(DB_TABLAS[4], columnas, KEY_JUGADOR_FK_EQUIPO + " = "
				+ IDEquipo, null, null, null, KEY_JUGADOR_NUMERO);
	}

	public Cursor obtenerTopJugadores(int tipo) {
		String[] columnas = new String[] { KEY_JUGADOR_IDJUGADOR,
				KEY_JUGADOR_NOMBRE, KEY_JUGADOR_APELLIDO,
				KEY_JUGADOR_DESCRIPCION, KEY_JUGADOR_CLUB, KEY_JUGADOR_NUMERO,
				KEY_JUGADOR_POSICION, KEY_JUGADOR_FOTO, KEY_JUGADOR_FK_EQUIPO,
				KEY_JUGADOR_GOL, KEY_JUGADOR_ASISTENCIA,
				KEY_JUGADOR_TARJETAAMARILLA, KEY_JUGADOR_TARJETAROJA,
				KEY_JUGADOR_CAPITAN, KEY_JUGADOR_LESIONADO };
		if (tipo == 0) {
			return db
					.query(DB_TABLAS[4], columnas, KEY_JUGADOR_ASISTENCIA
							+ " > 0", null, null, null, KEY_JUGADOR_GOL
							+ " desc", "10");
		} else {
			return db.query(DB_TABLAS[4], columnas, KEY_JUGADOR_ASISTENCIA
					+ " > 0", null, null, null, KEY_JUGADOR_ASISTENCIA
					+ " desc", "10");
		}
	}

	public Cursor obtenerTopGoles() {
		String[] columnasGol = new String[] { KEY_GOL_FK_JUGADOR, "COUNT(*)" };
		return db.query(DB_TABLAS[6], columnasGol, KEY_GOL_AUTOGOL + " = 0 AND "
				+ "upper(" + KEY_GOL_RUTAVIDEO + ") != 'PENAL'",
				null, KEY_GOL_FK_JUGADOR, null, "COUNT(*) desc", "10");
	}

	public Cursor obtenerEtapa(long idEtapa) {
		Cursor mCursor = null;
		try {
			mCursor = db.query(DB_TABLAS[2],
					new String[] { KEY_ETAPAMUNDIAL_NOMBRE },
					KEY_ETAPAMUNDIAL_ID + " = " + idEtapa, null, null, null,
					null);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		if (mCursor != null) {
			mCursor.moveToFirst();
		}
		return mCursor;
	}

	// public Cursor obtenerGoles_Jugador(long FK_Jugador){
	// String[] columnas = new String[] { };
	// }
}
